Introduction to software Engineering and software process model Software Requirements Engineering and Analysis Estimation and Scheduling Design Engineering Risks and Configuration Management Software Testing

Introduction

Modelling Requirement Engineering

Establishing the Groundwork

Identifying Stakeholders

Recognizing Multiple viewpoint

Working towards collaboration

Ashking the first questions

Eliciting Requirement

Collaborative Requirement Gathering

Usage scenarios

Elicitation Work Product

Developing Use Cases

Building the requirements model

Elements of the Requirements Model

Negotiating requirements

Validating Requirement

Let's dive into the world of software requirements engineering using a simple and relatable example. Imagine you're part of a team tasked with creating a brand new mobile app for a task management system. As you embark on this exciting journey, you quickly realize that various stakeholders, each with their unique perspectives and needs, are essential to the success of the project.


Stakeholders and Their Perspectives:


1. Marketing Group:


  • Interest: Making the app marketable and easy to sell.
  • Example: The marketing team suggests incorporating a visually appealing design, user-friendly interface, and unique features that will stand out in the market.

  • 2. Business Managers:


  • Interest: Delivering within budget and meeting market deadlines.
  • Example: Business managers emphasize the need for a feature set that aligns with the budget constraints and ensures the app is ready to launch in time to capture a specific market window.

  • 3. End Users:


  • Interest: Familiarity and ease of use.
  • Example: End users express the desire for features that they're accustomed to in similar apps, ensuring a smooth learning curve and a seamless user experience.

  • 4. Software Engineers:


  • Interest: Building a robust infrastructure to support marketable features.
  • Example: Software engineers focus on developing a strong backbone, ensuring the app's stability and performance, even if these aspects might not be immediately visible to non-technical stakeholders.

  • 5. Support Engineers:


  • Interest: Ensuring software maintainability.
  • Example: Support engineers stress the importance of creating code that is easy to maintain and troubleshoot, anticipating future updates and improvements.

  • Gathering Requirements from Different Perspectives:


    Now, let's imagine you're in a requirements gathering meeting. The marketing team suggests features that will make the app visually appealing and unique. Business managers highlight the need to prioritize features that align with the budget. End users express their desire for a user-friendly interface, and software engineers emphasize the importance of a strong infrastructure.


    Challenges: Inconsistencies and Conflicts:


    As you gather information, you notice that emerging requirements may sometimes be inconsistent or conflict with each other. For instance, the marketing team might push for visually striking features that could be outside the budget constraints set by business managers. End users might request features that conflict with the software engineer's focus on a robust infrastructure.


    Categorizing Stakeholder Information:


    To navigate through these diverse perspectives and potential conflicts, you decide to categorize the information. You create buckets for marketing requirements, business requirements, user requirements, technical requirements, and support requirements. Each bucket represents a unique stakeholder perspective.


    Resolving Conflicts:


    Now comes the interesting part - resolving conflicts. The marketing team wants visually appealing features, but you need to ensure these align with the budget. A negotiation process begins where priorities are discussed, and compromises are made. For example, you might compromise on certain intricate visual elements to stay within budget constraints.


    Decision-Making:


    In the end, decision-makers need to choose an internally consistent set of requirements for the system. This means considering the priorities, preferences, and constraints of each stakeholder group. The finalized set of requirements should create a balanced, marketable, and technically sound product.


    Conclusion:


    In the collaborative world of software development, where diverse stakeholders bring unique perspectives, requirements engineering becomes the bridge to align these varied interests. By understanding and categorizing requirements from different viewpoints, you pave the way for successful decision-making and the creation of a well-rounded, user-friendly, and market-ready product.

    So, the next time you embark on a software development project, remember the diverse group of stakeholders and the importance of understanding, categorizing, and resolving requirements from their various perspectives. It's the secret sauce to building a software product that not only meets expectations but exceeds them!

    Software


    Software refers to the set of programs, data, and instructions that enable computers to perform specific tasks or functions. It encompasses applications, operating systems, and utilities designed to fulfill user needs, enhancing productivity, communication, entertainment, and virtually all aspects of modern life through computational processes and data manipulation.


    Software Engineering


    Software Engineering is the disciplined application of principles, methods, and tools to develop, test, deploy, and maintain high-quality software systems. It involves systematic approaches to problem-solving, project management, and teamwork, aiming to meet user needs efficiently while adhering to standards and best practices throughout the software development lifecycle.